let images: any = {}


/**
* 加载并添加图像到地图样式
* @param {string} imageName - 图标的名称
* @param {string} imageUrl - 图标的 URL 或路径
* @param {Function} callback - 回调函数，在图标加载完成后执行
*/
export function loadAddIcon(map: any, imageName: string | number, imageUrl: any, callback: () => void) {
    if (images[imageName]) {
        console.log(`Image "${imageName}" is already loaded.`);
        if (callback) callback();
        return;
    } 

    map.loadImage(imageUrl, (error: any, image: any) => {
        if (error) {
            console.error(`Failed to load image: ${error}`);
            return;
        }

        // 添加图像到地图
        map.addImage(imageName, image);
        images[imageName] = image; // 保存图标信息

        // console.log(`Image "${imageName}" loaded and added to map.`);
        if (callback) callback();
    });
}
/**
* 获取已加载的图标
* @param {string} imageName - 图标的名称
* @returns {object|null} - 返回图标图像对象，未加载则返回 null
*/
export function getIcon(imageName: string | number): object | null {
    return images[imageName] || null;
}
/**
* 更新已添加的图标
* @param {string} imageName - 图标的名称
* @param {string} newImageUrl - 新的图标 URL 或路径
* @param {Function} callback - 回调函数
*/
export function updateIcon(map: any, imageName: any, newImageUrl: string | number, callback: any) {
    // 删除旧图标
    removeIcon(map, imageName);

    // 加载并添加新的图标
    loadAddIcon(map, imageName, newImageUrl, callback);
}
/**
* 删除图标
* @param {string} imageName - 图标的名称
*/
export function removeIcon(map: any, imageName: string | number) {
    if (images[imageName]) {
        map.removeImage(imageName);
        delete images[imageName]; // 删除记录
    } else {
        console.log(`Image "${imageName}" not found.`);
    }
}
/**
* 清空所有加载的图标
*/
export function clearAllIcons(map: any) {
    for (const imageName in images) {
        if (images.hasOwnProperty(imageName)) {
            map.removeImage(imageName);
        }
    }
    images = {}; // 清空图标记录
    console.log("All images have been removed from the map.");
}

